smoldot-light 0.14.0

Browser bindings to a light client for Substrate-based blockchains
Documentation

Smoldot light client library.

This library provides an easy way to create a light client.

This light client is opinionated towards certain aspects: what it downloads, how much memory and CPU it is willing to consume, etc.

Usage

Initialization

In order to use the light client, call [Client::new], passing an implementation of the [platform::PlatformRef] trait. See the documentation of the [platform::PlatformRef] trait for more information.

The [Client] contains two generic parameters:

  • An implementation of the [platform::PlatformRef] trait.
  • An opaque user data. If you do not use this, you can simply use ().

When the std feature of this library is enabled, the [platform::DefaultPlatform] struct can be used as an implementation of [platform::PlatformRef].

For example:

use smoldot_light::{Client, platform::DefaultPlatform};
let client = Client::new(DefaultPlatform::new(env!("CARGO_PKG_NAME").into(), env!("CARGO_PKG_VERSION").into()));
# let _: Client<_, ()> = client;  // Used in this example to infer the generic parameters of the Client

If the std feature of this library is disabled, then you need to implement the [platform::PlatformRef] trait manually.

Adding a chain

After the client has been initialized, use [Client::add_chain] to ask the client to connect to said chain. See the documentation of [AddChainConfig] for information about what to provide.

[Client::add_chain] returns a [ChainId], which identifies the chain within the [Client]. A [Client] can be thought of as a collection of chain connections, each identified by their [ChainId], akin to a HashMap<ChainId, ...>.

A chain can be removed at any time using [Client::remove_chain]. This will cause the client to stop all connections and clean up its internal services. The [ChainId] is instantly considered as invalid as soon as the method is called.

JSON-RPC requests and responses

Once a chain has been added, one can send JSON-RPC requests using [Client::json_rpc_request].

The request parameter of this function must be a JSON-RPC request in its text form. For example: {"id":53,"jsonrpc":"2.0","method":"system_name","params":[]}.

Calling [Client::json_rpc_request] queues the request in the internals of the client. Later, the client will process it.

Responses can be pulled by calling the [AddChainSuccess::json_rpc_responses] that is returned after a chain has been added.